function Vue(options={}){
    
          const VMODEL='v-model';
          const CHANGE='change';
    
          this.el    = options.el;
          this.data  = options.data;
           
           
           
           //获取单个dom元素
           function $(el,parent){
                if(!parent){
                    parent=document;
                }
                return parent.querySelector(el);
           }
           
           //获取多个dom元素
           function $$(el,parent){
               if(!parent){
                   parent=document;
               }
               return parent.querySelectorAll(el);
           }
           
           // 代理处理方法
           const  handler = {
                   get: function(target, key) {
                       console.log('getting '+key);
                       const v=target[key];
                       return v; 
                   },
                   set: function(target, key, value) {
                       console.log('setting='+key);
                       if(target[key]!=value){
                           target[key] = value;
                           //console.log("key=",key);
                           //document.getElementById(key).value=value;
                           //更新dom
                           $(`${options.el} input[${VMODEL}=${key}]`).value=value;
                           // 打印结果
                           $(`${options.el} code`).innerHTML=JSON.stringify(target);
                       }
                   }
           }
           
           this.proxy = new Proxy(this.data, handler);
           
           // 初始化绑定dom值和事件
           function $init({el,data,proxy}){
               
               //获取父级元素
               const p=$(el);
               //获取父级元素下的带[v-model] 的所有子元素
               const modelElemens=$$(`[${VMODEL}]`,p);
               modelElemens.forEach((dom)=>{
                   console.log(dom);
                   //获取 v-model="testa" 的值 testa
                   let key=dom.getAttribute(`${VMODEL}`);
                   //给元素赋值
                   dom.value=data[key];
                   //给元素绑定事件
                   dom.addEventListener(CHANGE,function(e){
                       const who=e.target;//获取元素
                       proxy[key]=who.value;//更新数据
                   });
               })
           }
           // 初始化
           $init(this);
           // 返回代理对象
           return this.proxy;
}
        
        